home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / nrpas13.arc / POIDEV.DEM < prev    next >
Text File  |  1991-05-01  |  1KB  |  57 lines

  1. PROGRAM d7r8 (input,output);
  2. (* driver for routine POIDEV *)
  3. LABEL 10,99;
  4. CONST
  5.    n = 20;
  6.    npts = 1000;
  7.    iscal = 200;
  8.    llen = 50;
  9. VAR
  10.    i,idum,j,k,klim : integer;
  11.    xm : real;
  12.    dist : ARRAY [0..20] OF real;
  13.    txt : PACKED ARRAY [1..50] OF char;
  14.    gloldm,glsq,glalxm,glg : real;
  15.    glinext,glinextp : integer;
  16.    glma : ARRAY [1..55] OF real;
  17.  
  18. (*$I MODFILE.PAS *)
  19. (*$I RAN3.PAS *)
  20.  
  21. (*$I GAMMLN.PAS *)
  22.  
  23. (*$I POIDEV.PAS *)
  24.  
  25. BEGIN
  26.    gloldm := -1.0;   (* initializes routine poidev *)
  27.    idum := -13;
  28. 10:   FOR j := 0 to 20 DO BEGIN
  29.       dist[j] := 0.0
  30.    END;
  31.    writeln('Mean of Poisson distribution (x := 0.0 to 20.0); neg. to end');
  32.    readln(xm);
  33.    IF (xm < 0.0) THEN GOTO 99;
  34.    IF (xm > 20.0) THEN GOTO 10;
  35.    FOR i := 1 to npts DO BEGIN
  36.       j := trunc(poidev(xm,idum));
  37.       IF ((j >= 0) AND (j <= 20)) THEN dist[j] := dist[j]+1
  38.    END;
  39.    writeln('Poisson-distributed deviate, mean ',xm:5:2,
  40.          ' of ',npts:6,' points');
  41.    writeln('x':5,'p(x)':8,'graph:':10);
  42.    FOR j := 0 to 19 DO BEGIN
  43.       dist[j] := dist[j]/npts;
  44.       FOR k := 1 to 50 DO BEGIN
  45.          txt[k] := ' '
  46.       END;
  47.       klim := trunc(iscal*dist[j]);
  48.       IF (klim > llen) THEN klim := llen;
  49.       FOR k := 1 to klim DO BEGIN
  50.          txt[k] := '*'
  51.       END;
  52.       writeln (1.0*j:6:2,dist[j]:8:4,'   ',txt)
  53.    END;
  54.    GOTO 10;
  55. 99:
  56. END.
  57.